Development Challenges

Application Development in the New MIllennium
Today, the Internet has made it possible to create a new breed of distributed, dynamic applications that embody several strategically important characteristics:

The Emergence of the N-Tier Application Architecture
Unlike simple two-tier client/server architectures, an n-tier architecture provides a middle tier, where any number of application servers are distributed across the network, to manage client sessions, host business logic, and connects to back-end resources for data, transactions, and content. This provides the platform for thin-client applications that expand portability of and accessibility to applications.

The Java™ Platform
Java is the pre-eminent platform of eBusiness. Specifically, the Java 2 platform is the definitive environment for enterprises aiming to build and install dynamic Internet applications that can run on a variety of computers, servers and other computing devices. Java 2 provides developers with speed, security and functionality that make it easier to create interoperable, mission-critical enterprise applications. The Java 2 platform is widely supported by the industry, and is being endorsed by hundreds of industry-leading companies worldwide.

The Java 2 Standard Edition (J2SE) is targeted at graphical application developers who are building and deploying visual, network-centric enterprise applications to be deployed from desktop PCs to workgroup servers. The Java 2 Enterprise Edition (J2EE) is targeted at the integration, at the business logic level, of enterprise applications and services and delivering them in new ways to HTML and XML clients.

Component-Based Development
The most important force in application development today is the movement toward building applications by assembling discrete components. Components are small pieces of software that encapsulate business rules and application functionality for an express purpose. Components share several common characteristics:

Developers can assemble and reuse components in a mix-and-match style that dramatically improves developer productivity. Component-based development uses a set of technologies and tools to enable the construction of applications from new and pre-fabricated components. Component-based development is the critical requirement for n-tier, dynamic Internet applications. Component development models simplify construction of an enterprise architecture in several ways by enabling:

Component-based development embodies a vision of the "software factory," complete with pre-built components, subassemblies, and final assembly. As a result, productivity, speed of development, and product quality all soar. Without component-based development, those goals are not feasible.

In a component-based development model, we move away from the large, monolithic application to a modular application that is easy to build and maintain. Development teams can buy best-of-breed components and customize and tailor them as needed. Building new components is the last resort.

Unfortunately, component-based development has carried with it an inherent paradox. The more fine grained or simple the component is, the lower the developer's productivity is. Working with a class library, for example, the developer's productivity is low, while, it increases dramatically as the component gets more large grained or complex . But as the component becomes more complex or larger grained (and developer productivity grows), its reusability typically decreases. Large robust applications - which are really or should be large, complex "super-components" - are typically not reusable in the way that finely granular components would be. This is because as a component becomes more complex its functionality becomes more specific to particular applications. Accordingly, reuse within other applications generally requires modification to some or all of its functionality. Until now, Technologies have simply not been available to enable customization without a total rewrite.

Reusability: The Ultimate Benefit of Component-Based Development
For many years, developers have sought a way to avoid reinventing the wheel with each development project they undertake. Application development using standards-based components offers the promise of reusability and its high-value benefits:

Productivity: The Ultimate Benefits of Reusability
Perhaps the greatest benefit of reusable components is the leveraged productivity it provides development teams. Typically, the finer (more granular) a component is, the more reusable it is. Consider, for example, a simple class library. It is used numerous times within a single application; however, because it is so granular - such a small portion of the overall system, there are few productivity gains to be achieved.
Conversely, as the component grows in size - and specificity - it is reused rarely. On those occasions, however, where this larger, special-purpose component is required, developer productivity is dramatically higher. The holy grail for development teams is to merge these curves so that reusability is high, regardless of the complexity of the component.

Component-Based Development: From Concept to Implementation
The time is ripe for organizations to implement strategic component-based development plans. There is opportunity to take advantage of the component benefits; however, there are still challenges to be faced:

It was with these challenges in mind that the LiveWater Component Design Center was developed. LiveWater's goal is to enable organizations to implement their strategic component-based development plans by addressing these issues.


LiveWater | Development Challenges | Introducing LiveWater | Unique Technologies | LiveWater Benefits

For more information, visit LiveWater's web site at www.livewater.com. Or, you can email us at info@livewater.com.

⌐ 2000 LiveWater, Inc.. All rights reserved. LiveWater is a trademark of LiveWater, Inc. All other trademarks or registered trademarks are property of their respective holders.